package AccesoADatos;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import Logica.Entidades.Participante;

public class UsuarioDAO {

	public List<List<String>> buscarParticipante(String tipoDoc, String numDoc){

		List<List<String>> resultado = new ArrayList<List<String>>();
		
		try {
            Connection conn = ConexionOracle.getConexionOracle().getConnection();
            
            // driver@machineName:port:SID,userid,password
            
            String consulta = "Select * from PARTICIPANTEINFO WHERE TIPO_DOCUMENTO ='" + tipoDoc + "'" + "AND NRO_DOCUMENTO = '" + numDoc + "'";
            
            Statement stmt = conn.createStatement();
            ResultSet rset = stmt.executeQuery(consulta);
            
            resultado = resultSetToString(rset,17);
            stmt.close();
            
            
        } catch (SQLException ex) {
            Logger.getLogger(ConexionOracle.class.getName()).log(Level.SEVERE, null, ex);
        }
		return resultado;	
	}
	
	public List<List<String>> buscarPeriodista(String tipoDoc, String numDoc){

		List<List<String>> resultado = new ArrayList<List<String>>();
		
		try {
            Connection conn = ConexionOracle.getConexionOracle().getConnection();
            
            String consulta = "Select * from PERIODISTAINFO WHERE TIPO_DOCUMENTO ='" + tipoDoc + "'" + "AND NRO_DOCUMENTO = '" + numDoc + "'";
            
            Statement stmt = conn.createStatement();
            ResultSet rset = stmt.executeQuery(consulta);
            
            resultado = resultSetToString(rset,7);
            stmt.close();
            
            
        } catch (SQLException ex) {
            Logger.getLogger(ConexionOracle.class.getName()).log(Level.SEVERE, null, ex);
        }
		return resultado;
	}
	
	public List<List<String>> buscarAdministrador(String tipoDoc, String numDoc){

		List<List<String>> resultado = new ArrayList<List<String>>();
		
		try {

            Connection conn = ConexionOracle.getConexionOracle().getConnection();
            
            // driver@machineName:port:SID, userid, password
            
            String consulta = "Select * from ADMINISTRADORINFO WHERE TIPO_DOCUMENTO ='" + tipoDoc + "'" + "AND NRO_DOCUMENTO = '" + numDoc + "'";
            
            Statement stmt = conn.createStatement();
            ResultSet rset = stmt.executeQuery(consulta);
            
            resultado = resultSetToString(rset,7);
            stmt.close();
            
        } catch (SQLException ex) {
            Logger.getLogger(ConexionOracle.class.getName()).log(Level.SEVERE, null, ex);
        }
		return resultado;
	}
	
	static List<List<String>> resultSetToString(ResultSet r, int columnas) throws SQLException{
		
		List<List<String>> lista = new ArrayList<List<String>>();
		
		while(r.next()){
			
			List<String> temp = new ArrayList<String>();
			
			for(int i = 1 ; i < columnas ; i++){
				temp.add(r.getString(i));
			}
			lista.add(temp);
		}
		return lista;
	}

	public static List<List<String>> posicionEnTorneo(Participante p) {
		List<List<String>> resultado = new ArrayList<List<String>>();
		
		try {
            Connection conn = ConexionOracle.getConexionOracle().getConnection();
            
            // driver@machineName:port:SID, userid, password
            
            String consulta = "SELECT R FROM(SELECT ROWNUM AS R, NRO_DOCUMENTO   FROM (SELECT US.NRO_DOCUMENTO  FROM GRANDT.EQUIPO_FANTASIA EF, GRANDT.USUARIO US  WHERE EF.NRO_DOCUMENTO=US.NRO_DOCUMENTO AND EF.TIPO_DOCUMENTO=US.TIPO_DOCUMENTO ORDER BY PUNTAJE_TOTAL DESC)) WHERE NRO_DOCUMENTO =" + p.getNroDocumento();
            Statement stmt = conn.createStatement();
            ResultSet rset = stmt.executeQuery(consulta);
            
            resultado = resultSetToString(rset,2);
            stmt.close();
               
        } catch (SQLException ex) {
            Logger.getLogger(ConexionOracle.class.getName()).log(Level.SEVERE, null, ex);
        }
		return resultado;
	}
}
